Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Begin generating client implementations #1052

Merged
merged 4 commits into from
Jun 26, 2024

Conversation

Xtansia
Copy link
Collaborator

@Xtansia Xtansia commented Jun 26, 2024

Description

Starts generating client class implementations, modifies existing version of the class to be an abstract base class that the generated one extends from.

By submitting this pull request, I confirm that my contribution is made under the terms of the Apache 2.0 license.
For more information on following Developer Certificate of Origin and signing off your commits, please check here.

Signed-off-by: Thomas Farr <tsfarr@amazon.com>
Signed-off-by: Thomas Farr <tsfarr@amazon.com>
Signed-off-by: Thomas Farr <tsfarr@amazon.com>
Signed-off-by: Thomas Farr <tsfarr@amazon.com>
Copy link
Member

@dblock dblock left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This works.

@dblock dblock merged commit dbde609 into opensearch-project:main Jun 26, 2024
54 checks passed
@Xtansia Xtansia deleted the feat/client-generation branch June 26, 2024 20:53
* compatible open source license.
*/

/*
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@Xtansia my apologies for being late, why do we use ES license here? This is 100% OS generated code, right?

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It's kind of a weird situation because the code it's generating is attempting to match the existing client classes which are licensed to ES. We had a similar case with .NET: opensearch-project/opensearch-net#320 (comment)

Though here the generator was written completely from scratch, I'd assume as the output is (near) identical it's probably legally basically the same as having just copy pasted parts of the file (with extra steps).

Thoughts @dblock?

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We are told to leave these in generated files if they are substantially not different.

Xtansia added a commit to Xtansia/opensearch-java that referenced this pull request Aug 30, 2024
* Tweak client generation to extend from existing classes

Signed-off-by: Thomas Farr <tsfarr@amazon.com>

* Modify existing client classes to be abstract base classes

Signed-off-by: Thomas Farr <tsfarr@amazon.com>

* Re-run generator

Signed-off-by: Thomas Farr <tsfarr@amazon.com>

* ./gradlew spotlessApply

Signed-off-by: Thomas Farr <tsfarr@amazon.com>

---------

Signed-off-by: Thomas Farr <tsfarr@amazon.com>
(cherry picked from commit dbde609)
dblock pushed a commit that referenced this pull request Aug 30, 2024
* Generate client code from OpenAPI specification (#366)

* OpenAPI generator from scratch

Signed-off-by: Thomas Farr <tsfarr@amazon.com>

* Write to files and generate object shapes

Signed-off-by: Thomas Farr <tsfarr@amazon.com>

* Output response shapes and enum shapes

Signed-off-by: Thomas Farr <tsfarr@amazon.com>

* Fix builder setters for enums

Signed-off-by: Thomas Farr <tsfarr@amazon.com>

* Better handling of required fields

Signed-off-by: Thomas Farr <tsfarr@amazon.com>

* Unify templates for ObjectShape/OperationRequest

Signed-off-by: Thomas Farr <tsfarr@amazon.com>

* Simple http path expression

Signed-off-by: Thomas Farr <tsfarr@amazon.com>

* Generate client class

Signed-off-by: Thomas Farr <tsfarr@amazon.com>

* Cleanup

Signed-off-by: Thomas Farr <tsfarr@amazon.com>

* Generate namespaces remote store client

Signed-off-by: Thomas Farr <tsfarr@amazon.com>

* Add license header, improve http path builder, fix remote store spec

Signed-off-by: Thomas Farr <tsfarr@amazon.com>

* Suppress checkstyle unused imports lint for generated code

Signed-off-by: Thomas Farr <tsfarr@amazon.com>

* Centralize some naming

Signed-off-by: Thomas Farr <tsfarr@amazon.com>

* Allow renaming operations

Signed-off-by: Thomas Farr <tsfarr@amazon.com>

* Add generated warning header

Signed-off-by: Thomas Farr <tsfarr@amazon.com>

* Refactor

Signed-off-by: Thomas Farr <tsfarr@amazon.com>

* Less code more templates

Signed-off-by: Thomas Farr <tsfarr@amazon.com>

* Simplify http path part

Signed-off-by: Thomas Farr <tsfarr@amazon.com>

* Fixes

Signed-off-by: Thomas Farr <tsfarr@amazon.com>

* Swap to swagger-parser

Signed-off-by: Thomas Farr <tsfarr@amazon.com>

* Handle x-data-type & array response bodies

Signed-off-by: Thomas Farr <tsfarr@amazon.com>

* Handle multiple http paths for same operation

Signed-off-by: Thomas Farr <tsfarr@amazon.com>

* Improve type handling

Signed-off-by: Thomas Farr <tsfarr@amazon.com>

* Tweak package name determination

Signed-off-by: Thomas Farr <tsfarr@amazon.com>

* Handle additionalProperties on ErrorCause

Signed-off-by: Thomas Farr <tsfarr@amazon.com>

* Simplify enum shape

Signed-off-by: Thomas Farr <tsfarr@amazon.com>

* Change default number type

Signed-off-by: Thomas Farr <tsfarr@amazon.com>

* Generate parameter-less operation method when no required fields

Signed-off-by: Thomas Farr <tsfarr@amazon.com>

* Refactor to parse multi-file spec

Signed-off-by: Thomas Farr <tsfarr@amazon.com>

* spotlessApply

Signed-off-by: Thomas Farr <tsfarr@amazon.com>

* Use spotless to format code

Signed-off-by: Thomas Farr <tsfarr@amazon.com>

* Maintain spec location information

Signed-off-by: Thomas Farr <tsfarr@amazon.com>

* Refactor model transformation and type mapper

Signed-off-by: Thomas Farr <tsfarr@amazon.com>

* Match existing naming scheme

Signed-off-by: Thomas Farr <tsfarr@amazon.com>

* Change OperationGroup matching logic to determine which to generate

Signed-off-by: Thomas Farr <tsfarr@amazon.com>

* Better handle errors thrown by formatter

Signed-off-by: Thomas Farr <tsfarr@amazon.com>

* Add typedef comment

Signed-off-by: Thomas Farr <tsfarr@amazon.com>

* Support tagged union

Signed-off-by: Thomas Farr <tsfarr@amazon.com>

* Add additional reserved keywords

Signed-off-by: Thomas Farr <tsfarr@amazon.com>

* Improve parsing logic

Signed-off-by: Thomas Farr <tsfarr@amazon.com>

* Add basic tests and implement proper argument parsing

Signed-off-by: Thomas Farr <tsfarr@amazon.com>

* Improve tagged union generation and filter global query params

Signed-off-by: Thomas Farr <tsfarr@amazon.com>

* Change enum naming style

Signed-off-by: Thomas Farr <tsfarr@amazon.com>

* Handle Time type

Signed-off-by: Thomas Farr <tsfarr@amazon.com>

* Handle deprecation

Signed-off-by: Thomas Farr <tsfarr@amazon.com>

* Clear operations to generate

Signed-off-by: Thomas Farr <tsfarr@amazon.com>

* Change usages of `<stream>.toList()` to `<stream>.collect(Collectors.toList())`

Signed-off-by: Thomas Farr <tsfarr@amazon.com>

* Remove publishing from build.gradle

Signed-off-by: Thomas Farr <tsfarr@amazon.com>

* Cleaning up

Signed-off-by: Thomas Farr <tsfarr@amazon.com>

* spotless

Signed-off-by: Thomas Farr <tsfarr@amazon.com>

---------

Signed-off-by: Thomas Farr <tsfarr@amazon.com>
(cherry picked from commit bb995ec)

* Bump commons-codec:commons-codec from 1.11.0 to 1.17.0 in java-codegen (#1023)

Signed-off-by: Thomas Farr <tsfarr@amazon.com>
(cherry picked from commit 13982b1)

* Regenerate request/response for the `info` operation (#1026)

* Tweak formatting rules used by codegen to allow reformatting javadoc

Signed-off-by: Thomas Farr <tsfarr@amazon.com>

* Support codegen for request shapes that may be singleton

Signed-off-by: Thomas Farr <tsfarr@amazon.com>

* Generate info operation shapes

Signed-off-by: Thomas Farr <tsfarr@amazon.com>

---------

Signed-off-by: Thomas Farr <tsfarr@amazon.com>
(cherry picked from commit dea7e72)

* Enforce & fix license headers (#1027)

* Enforce license headers

Signed-off-by: Thomas Farr <tsfarr@amazon.com>

* spotlessApply

Signed-off-by: Thomas Farr <tsfarr@amazon.com>

---------

Signed-off-by: Thomas Farr <tsfarr@amazon.com>
(cherry picked from commit 5d5c6b5)

* Add `@Generated` annotation to generated classes (#1029)

Signed-off-by: Thomas Farr <tsfarr@amazon.com>
(cherry picked from commit 767c313)

* Begin generating client implementations (#1052)

* Tweak client generation to extend from existing classes

Signed-off-by: Thomas Farr <tsfarr@amazon.com>

* Modify existing client classes to be abstract base classes

Signed-off-by: Thomas Farr <tsfarr@amazon.com>

* Re-run generator

Signed-off-by: Thomas Farr <tsfarr@amazon.com>

* ./gradlew spotlessApply

Signed-off-by: Thomas Farr <tsfarr@amazon.com>

---------

Signed-off-by: Thomas Farr <tsfarr@amazon.com>
(cherry picked from commit dbde609)

* Bump org.junit:junit-bom from 5.10.2 to 5.10.3 (#1062)

* Bump org.junit:junit-bom from 5.10.2 to 5.10.3

Bumps [org.junit:junit-bom](https://github.com/junit-team/junit5) from 5.10.2 to 5.10.3.
- [Release notes](https://github.com/junit-team/junit5/releases)
- [Commits](junit-team/junit5@r5.10.2...r5.10.3)

Signed-off-by: Thomas Farr <tsfarr@amazon.com>

---
updated-dependencies:
- dependency-name: org.junit:junit-bom
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

* Update changelog

Signed-off-by: dependabot[bot] <support@github.com>

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: dependabot[bot] <dependabot[bot]@users.noreply.github.com>
(cherry picked from commit af769c8)

* Bump org.owasp.dependencycheck from 9.2.0 to 10.0.2 (#1069)

* Bump org.owasp.dependencycheck from 9.2.0 to 10.0.2

Bumps org.owasp.dependencycheck from 9.2.0 to 10.0.2.

Signed-off-by: Thomas Farr <tsfarr@amazon.com>

---
updated-dependencies:
- dependency-name: org.owasp.dependencycheck
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>

* Update changelog

Signed-off-by: dependabot[bot] <support@github.com>

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: dependabot[bot] <dependabot[bot]@users.noreply.github.com>
(cherry picked from commit 848be31)

* Add workflow to auto-update codegen (#1065)

Signed-off-by: Thomas Farr <tsfarr@amazon.com>
(cherry picked from commit 0cf11db)

* Fix handling of OpenAPI schemas with multiple types (#1102)

Signed-off-by: Thomas Farr <tsfarr@amazon.com>
(cherry picked from commit eff1ae1)

* Regenerate dangling_indices namespace (#1124)

* Rename genericArgs to typeParams

Signed-off-by: Thomas Farr <tsfarr@amazon.com>

* Fix required path param handling

Signed-off-by: Thomas Farr <tsfarr@amazon.com>

* Correctly generate AcknowledgedResponseBase

Signed-off-by: Thomas Farr <tsfarr@amazon.com>

* Generate DeleteDanglingIndexRequest

Signed-off-by: Thomas Farr <tsfarr@amazon.com>

* Correctly generate DeleteDanglingIndexResponse

Signed-off-by: Thomas Farr <tsfarr@amazon.com>

* Generate import_dangling_index

Signed-off-by: Thomas Farr <tsfarr@amazon.com>

* Generate ListDanglingIndicesRequest

Signed-off-by: Thomas Farr <tsfarr@amazon.com>

* Generate ErrorCause

Signed-off-by: Thomas Farr <tsfarr@amazon.com>

* Generate NodeStatistics

Signed-off-by: Thomas Farr <tsfarr@amazon.com>

* Generate DanglingIndex

Signed-off-by: Thomas Farr <tsfarr@amazon.com>

* Generate ListDanglingIndicesResponse

Signed-off-by: Thomas Farr <tsfarr@amazon.com>

* Generate DanglingIndicesClient

Signed-off-by: Thomas Farr <tsfarr@amazon.com>

* Fixes

Signed-off-by: Thomas Farr <tsfarr@amazon.com>

* Changelog and Upgrading

Signed-off-by: Thomas Farr <tsfarr@amazon.com>

* Fix javadoc

Signed-off-by: Thomas Farr <tsfarr@amazon.com>

* Fix tests

Signed-off-by: Thomas Farr <tsfarr@amazon.com>

---------

Signed-off-by: Thomas Farr <tsfarr@amazon.com>
(cherry picked from commit 324f90a)

* Bump com.github.jk1.dependency-license-report from 2.8 to 2.9 (#1144)

Bumps com.github.jk1.dependency-license-report from 2.8 to 2.9.

Signed-off-by: Thomas Farr <tsfarr@amazon.com>
---
updated-dependencies:
- dependency-name: com.github.jk1.dependency-license-report
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
(cherry picked from commit 08e7e65)

* Tweak codegen logic for formatting, documentation and handling of anyOf (#1152)

* Re-generate code

Signed-off-by: Thomas Farr <tsfarr@amazon.com>

* Improve builder doc comments

Signed-off-by: Thomas Farr <tsfarr@amazon.com>

* Fix list/map isDefined serialize logic

Signed-off-by: Thomas Farr <tsfarr@amazon.com>

* Add support for deprecated enums

Signed-off-by: Thomas Farr <tsfarr@amazon.com>

* Improve isDefined logic

Signed-off-by: Thomas Farr <tsfarr@amazon.com>

* Allow overriding request/response naming

Signed-off-by: Thomas Farr <tsfarr@amazon.com>

* Support anyOf

Signed-off-by: Thomas Farr <tsfarr@amazon.com>

* Update spec

Signed-off-by: Thomas Farr <tsfarr@amazon.com>

* spotlessApply

Signed-off-by: Thomas Farr <tsfarr@amazon.com>

---------

Signed-off-by: Thomas Farr <tsfarr@amazon.com>
(cherry picked from commit 7b954af)

* Generate the ml namespace (#1158)

* Generate ml.register_model_group

Signed-off-by: Thomas Farr <tsfarr@amazon.com>

* Start neural search sample

Signed-off-by: Thomas Farr <tsfarr@amazon.com>

* Re-generate ShardStatistics

Signed-off-by: Thomas Farr <tsfarr@amazon.com>

* Re-generate ShardFailure

Signed-off-by: Thomas Farr <tsfarr@amazon.com>

* Re-generate Result

Signed-off-by: Thomas Farr <tsfarr@amazon.com>

* Re-generate WriteResponseBase

Signed-off-by: Thomas Farr <tsfarr@amazon.com>

* Generate ml.delete_model_group

Signed-off-by: Thomas Farr <tsfarr@amazon.com>

* Generate ml.register_model

Signed-off-by: Thomas Farr <tsfarr@amazon.com>

* Exclude legacy license from ml namespace

Signed-off-by: Thomas Farr <tsfarr@amazon.com>

* Generate ml.get_task

Signed-off-by: Thomas Farr <tsfarr@amazon.com>

* Generate ml.delete_task

Signed-off-by: Thomas Farr <tsfarr@amazon.com>

* Generate ml.delete_model

Signed-off-by: Thomas Farr <tsfarr@amazon.com>

* Generate ml.deploy_model

Signed-off-by: Thomas Farr <tsfarr@amazon.com>

* Generate ml.undeploy_model

Signed-off-by: Thomas Farr <tsfarr@amazon.com>

* Complete neural search sample

Signed-off-by: Thomas Farr <tsfarr@amazon.com>

* Generate ml.get_model

Signed-off-by: Thomas Farr <tsfarr@amazon.com>

* Add changelog entry

Signed-off-by: Thomas Farr <tsfarr@amazon.com>

* note

Signed-off-by: Thomas Farr <tsfarr@amazon.com>

* Fix tests

Signed-off-by: Thomas Farr <tsfarr@amazon.com>

---------

Signed-off-by: Thomas Farr <tsfarr@amazon.com>
(cherry picked from commit c6e61e1)

* Invert abstractness of generated vs "handwritten" client classes (#1170)

* Invert abstractness of generated vs "handwritten" client classes

Signed-off-by: Thomas Farr <tsfarr@amazon.com>

* Address review comments

Signed-off-by: Thomas Farr <tsfarr@amazon.com>

---------

Signed-off-by: Thomas Farr <tsfarr@amazon.com>
(cherry picked from commit 42e2928)

* Temporarily disable code gen up-to-date check

Signed-off-by: Thomas Farr <tsfarr@amazon.com>

---------

Signed-off-by: Thomas Farr <tsfarr@amazon.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants